Software updates are frequently provided to electronic devices from hardware and/or software providers. Such updates may be intended to, among other things, improve functionality of the hardware/software and/or reduce security risks associated with such hardware/software.
To provide software updates that are relevant to the electronic device (e.g., that are useful given the hardware/software configuration of the device), the provider generally collects information about the hardware and/or software comprised within and/or operating upon the electronic device. In some applications this is a relatively easy task because few, if any, changes are made to the software/hardware once it is shipped by the manufacturer. However, in other applications, the hardware/software on an electronic device can vary significantly and/or can be modified after shipment of the electronic device. For example, the number of possible hardware/software configurations on computers and/or mobile device can be virtually limitless.
In applications where there are can be numerous variations in hardware/software configurations, the provider (e.g., an updating service) generally transmits to the electronic device (e.g., a client device) one or more questions (e.g., referred to herein as updates). The electronic device may proceed to process the one or more updates and send answers (e.g., referred to herein as states), typically along with the updates, (back) to the updating service. Based upon the states, the updating service may provide additional updates (e.g., if additional updates would be useful given the answers to the previous updates/questions). Once the updating service has determined that there are no more questions to be asked, the updating service may provide to the client device one or more software (non-question) updates that are relevant to the electronic device based upon the responses to the updates.